package databases

import (
	_ "github.com/beego/beego/v2/client/cache/redis"
	"github.com/beego/beego/v2/client/orm"
	"github.com/beego/beego/v2/core/logs"
	beego "github.com/beego/beego/v2/server/web"
	"github.com/go-redis/redis"
	_ "github.com/go-sql-driver/mysql"
	"house/models"
)

var RedisCLi *redis.Client

func init() {
	initMysql()
	initRedis()
}

func createTable() {
	orm.RegisterModel(new(models.User))
}

func initRedis() {
	var err error
	RedisCLi = redis.NewClient(&redis.Options{
		Addr:     beego.AppConfig.DefaultString("redis::redisAddr", ""),
		Password: beego.AppConfig.DefaultString("redis::Password", ""),
		DB:       beego.AppConfig.DefaultInt("redis::DB", 0),
	})
	if err != nil {
		logs.Error("Redis连接失败", err)
		return
	}
}

func initMysql() {
	// 注册驱动
	err := orm.RegisterDriver("mysql", orm.DRMySQL)
	if err != nil {
		logs.Error("数据库连接失败", err)
		return
	}

	// 链接数据库
	err = orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/house")
	if err != nil {
		logs.Error("数据库连接失败", err)
	} else {
		logs.Info("数据库连接成功")
	}
	// 自动创建表
	createTable()

	orm.Debug = true

	err = orm.RunSyncdb("default", false, true)
	if err != nil {
		logs.Error("数据表创建失败", err)
		return
	}
}
